Using Dependence Graphs for Slicing Functional Programs

نویسنده

  • Vadim Zaytsev
چکیده

One of the popular ways to perform automated analysis of programs is by manipulating slices — reduced executable programs derived from the originals by removing some steps in such a way that they replicate parts of the original behaviour [18]. Such slices are useful for debugging and comprehension, refactoring and restructuring, reverse engineering and maintenance, model checking, as well as other tasks related to similar problems. At the core of this family of methods are the slicing strategies (backward slicing [18], forward slicing [8], as well as other variations [19], including higher-order lazy functional slicing [13]) and the base data structures. In rare cases analysis, slicing and transformation are performed directly on abstract syntax trees enriched with annotations [3]. However, it is more productive to operate on a data structure specifically designed to facilitate these tasks. Many such structures were proposed in the last three decades:

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Term Dependence Graphs 1

Program slicing is a method for decomposing programs by analyzing their data and control flow. It has many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). The so called program dependence graph—a data structure that stores control and data dependences between the statements of imperative programs—is a key ingredient of many slic...

متن کامل

Slicing Concurrent Java Programs

Although many slicing algorithms have been proposed for object-oriented programs, no slicing algorithm has been proposed which can be used to handle the problem of slicing concurrent Java programs correctly. In this paper, we propose a slicing algorithm for concurrent Java programs. To slice concurrent Java programs, we present a dependence-based representation called multithreaded dependence g...

متن کامل

Static Slicing of Rewrite Systems 1

Program slicing is a method for decomposing programs by analyzing their data and control flow. Slicingbased techniques have many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). Slicing has been widely studied within the imperative programming paradigm, where it is often based on the so called program dependence graph, a data str...

متن کامل

Static Slicing of Rewrite Systems

Program slicing is a method for decomposing programs by analyzing their data and control flow. Slicingbased techniques have many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). Slicing has been widely studied within the imperative programming paradigm, where it is often based on the so called program dependence graph, a data str...

متن کامل

Multithreaded Dependence Graphs for Concurrent Java Programs

Understanding program dependencies in a computer program is essential for many software engineering activities including program slicing, testing, debugging, reverse engineering, and maintenance. In this paper, we present a dependence-based representation called multithreaded dependence graph, which extends previous dependence-based representations, to represent program dependencies in a concur...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2015